package com.fxp.project.jiuselu.web.models.order.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 订单表
 * </p>
 *
 * @author Jason.Wang
 * @since 2021-11-17
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class JslOrder implements Serializable {


    /**
     * 订单编号
     */
    @TableId("order_id")
    private String orderId;

    /**
     * 订单类型;0：全款 1：预付 2：银行转账
     */
    @TableField("order_type")
    private Integer orderType;

    /**
     * 预付比例;order_type为1时使用
     */
    @TableField("order_percent")
    private Integer orderPercent;

    /**
     * 延期尾款天数;order_type为1时使用
     */
    @TableField("order_days")
    private Integer orderDays;

    /**
     * 银行承兑税率;order_type为2时使用
     */
    @TableField("order_tax")
    private BigDecimal orderTax;

    /**
     * 用户id
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 订单状态;0：未完结 1：已完结 2:已取消
     */
    @TableField("order_status")
    private Integer orderStatus;

    /**
     * 发货状态;0：未发货 1：已发货
     */
    @TableField("logistic_status")
    private Integer logisticStatus;

    /**
     * 支付状态;0：未支付 1：支付完成 2：已支付预付款
     */
    @TableField("pay_status")
    private Integer payStatus;

    /**
     * 收货人
     */
    private String consignee;

    /**
     * 国家;0：中国
     */
    private Integer country;

    /**
     * 省份id
     */
    @TableField("province_id")
    private Long provinceId;

    /**
     * 省份名称
     */
    @TableField("province_name")
    private String provinceName;

    /**
     * 市区id
     */
    @TableField("city_id")
    private Long cityId;

    /**
     * 市区名称
     */
    @TableField("city_name")
    private String cityName;

    /**
     * 区域id
     */
    @TableField("district_id")
    private Long districtId;

    /**
     * 区域名称
     */
    @TableField("district_name")
    private String districtName;

    /**
     * 地址
     */
    private String address;

    /**
     * 收货手机
     */
    private String phone;

    /**
     * 邮件
     */
    private String email;

    /**
     * 物流code
     */
    @TableField("logistic_code")
    private String logisticCode;

    /**
     * 物流编码
     */
    @TableField("logistic_num")
    private String logisticNum;

    /**
     * 物流名称
     */
    @TableField("logistic_name")
    private String logisticName;

    /**
     * 邮费
     */
    @TableField("logistic_price")
    private BigDecimal logisticPrice;

    /**
     * 发票抬头
     */
    @TableField("fare_title")
    private String fareTitle;

    /**
     * 商品总价
     */
    @TableField("goods_price")
    private BigDecimal goodsPrice;

    /**
     * 优惠券抵扣
     */
    @TableField("coupon_price")
    private BigDecimal couponPrice;

    /**
     * 应付款金额
     */
    @TableField("order_amount")
    private BigDecimal orderAmount;

    /**
     * 订单总价
     */
    @TableField("total_amount")
    private BigDecimal totalAmount;

    /**
     * 下单时间
     */
    @TableField("add_time")
    private LocalDateTime addTime;

    /**
     * 最新发货时间
     */
    @TableField("logistic_time")
    private LocalDateTime logisticTime;

    /**
     * 收货确认时间
     */
    @TableField("confirm_time")
    private LocalDateTime confirmTime;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @TableField("pay_time")
    private LocalDateTime payTime;

    /**
     * 第三方平台交易流水号
     */
    @TableField("transaction_id")
    private String transactionId;

    /**
     * 用户备注
     */
    @TableField("user_note")
    private String userNote;

    /**
     * 是否已分成;0：未分成 1：已分成
     */
    @TableField("is_distribute")
    private Integer isDistribute;

    /**
     * 取消订单时间
     */
    @TableField("cancel_time")
    private LocalDateTime cancelTime;

    /**
     * 取消订单类型;0：手动取消 1：支付超时 2：退款
     */
    @TableField("cancel_type")
    private Integer cancelType;

    /**
     * 取消订单状态 0 申请审核 1 完成 2 审核通过
     */
    @TableField("cancel_status")
    private Integer cancelStatus;

    /**
     * 预付款金额;order_type为1时使用
     */
    @TableField("advance_amount")
    private BigDecimal advanceAmount;

    /**
     * 预付款时间
     */
    @TableField(exist = false)
    private Long surplusMills;

    @TableField(exist = false)
    private Boolean isUpload;

    /**
     * 余额抵扣
     */
    @TableField("deduction")
    private BigDecimal deduction;

    @TableField("frequency")
    private Integer frequency;
    /**
     * 是否延长收货
     */
    @TableField("is_delay")
    private Integer isDelay;
    /**
     * 是否拆分发货
     */
    @TableField("is_split")
    private Integer isSplit;

    @TableField(exist = false)
    private Long isDelayTime;

    /**
     * 税率/手续费(%)
     */
    @TableField("order_rate")
    private BigDecimal orderRate;

}
